package cn.com.blueInfo.bpm.template.service;

import cn.com.blueInfo.bpm.template.request.ParallelBranchDTO;
import cn.com.blueInfo.bpm.template.response.ParallelBranchVO;
import cn.com.blueInfo.utils.result.ResultInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 并行分支 业务服务类
 * @author suxch
 * @since 2025-08-24 01:41:15
 */
public interface ParallelBranchService {

    /**
     * 新增并行分支
     * @param parallelBranchDTO 并行分支参数
     */
    ResultInfo<Integer> addParallelBranch(ParallelBranchDTO parallelBranchDTO);

    /**
     * 批量新增并行分支
     * @param parallelBranchDTOList 并行分支参数列表
     */
    ResultInfo<Integer> batchAddParallelBranch(List<ParallelBranchDTO> parallelBranchDTOList);

    /**
     * 删除并行分支
     * @param parallelBranchId 并行分支ID
     */
    ResultInfo<Integer> removeParallelBranch(Long parallelBranchId);

    /**
     * 批量删除并行分支
     * @param parallelBranchIdList 并行分支ID列表
     */
    ResultInfo<Integer> batchRemoveParallelBranch(List<Long> parallelBranchIdList);

    /**
     * 更新部分并行分支
     * @param parallelBranchUpdatePartialDTO 并行分支参数
     */
    ResultInfo<Integer> modifyParallelBranchPartial(
            ParallelBranchDTO.UpdatePartialDTO parallelBranchUpdatePartialDTO);

    /**
     * 更新全部并行分支
     * @param parallelBranchDTO 并行分支参数
     */
    ResultInfo<Integer> modifyParallelBranch(ParallelBranchDTO parallelBranchDTO);

    /**
     * 查询一条并行分支
     * @param parallelBranchId 并行分支ID
     */
    ResultInfo<ParallelBranchVO> queryParallelBranchById(Long parallelBranchId);

    /**
     * 分页查询并行分支
     * @param parallelBranchQueryDTO 并行分支参数
     */
    ResultInfo<Page<ParallelBranchVO>> queryParallelBranchPage(ParallelBranchDTO.QueryDTO parallelBranchQueryDTO);

    /**
     * 根据条件查询 并行分支 数量
     * @param parallelBranchQueryDTO 并行分支参数
     */
    ResultInfo<Long> queryParallelBranchCount(ParallelBranchDTO.QueryDTO parallelBranchQueryDTO);

    /**
     * 根据条件查询 并行分支
     * @param parallelBranchQueryDTO 并行分支参数
     */
    ResultInfo<List<ParallelBranchVO>> queryParallelBranchList(ParallelBranchDTO.QueryDTO parallelBranchQueryDTO);

}
